package com.nageoffer.jobtrain.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nageoffer.jobtrain.admin.dao.entity.OjQuestionDO;
import com.nageoffer.jobtrain.admin.dto.req.OjQuestionAddReqDTO;
import com.nageoffer.jobtrain.admin.dto.req.OjQuestionEditReqDTO;
import com.nageoffer.jobtrain.admin.dto.req.OjQuestionPageReqDTO;
import com.nageoffer.jobtrain.admin.dto.resp.OjQuestionDetailRespDTO;
import com.nageoffer.jobtrain.admin.dto.resp.OjQuestionPageRespDTO;

/**
 * author：唐晨
 * Oj题目接口层
 */
public interface OjQuestionService extends IService<OjQuestionDO> {
    /**
     * 根据题目难度/标题分页查询Oj题目
     *
     * @param requestParam 分页请求参数
     * @return 分页返回实体list列表
     */
    IPage<OjQuestionPageRespDTO> ojQuestionPageList(OjQuestionPageReqDTO requestParam);

    /**
     * 根据Oj题目ID判断该题目是否存在
     *
     * @param id Oj题目ID
     * @return 返回值对象不为null，代表存在；为空代表不存在这条数据
     */
    OjQuestionDO hasOjQuestionDetail(Long id);

    /**
     * 新增Oj题目管理
     *
     * @param requestParam 新增题目请求实体
     * @return 是否添加成功
     */
    void addOjQuestion(OjQuestionAddReqDTO requestParam);

    /**
     * 根据Oj题目ID获取题目详情
     *
     * @param id Oj题目Id
     * @return Oj题目详情
     */
    OjQuestionDetailRespDTO getOjQuestionDetailById(Long id);

    /**
     * 修改Oj题目详情
     *
     * @param requestParam 修改Oj题目请求入参
     */
    void updateOjQuestionDetail(OjQuestionEditReqDTO requestParam);

    /**
     * 删除Oj题目详情
     *
     * @param id Oj题目主键ID
     */
    void deleteOjQuestionDetail(Long id);
}
